﻿namespace STT.Parser
{
    // Token: 0x02000024 RID: 36
    public class StartBlock : SymbolGenericFormat
    {
        // Token: 0x06000097 RID: 151 RVA: 0x00007944 File Offset: 0x00006944
        public StartBlock(StartBlock _block_parent, uint _level, BLOCK_TYPE _block_type, ulong _offset_base, ulong _size_max, uint _number_of_member) : base(_block_parent, _level)
        {
            this.m_block_type = _block_type;
            this.m_offset_base = _offset_base;
            this.m_size_max = _size_max;
            this.m_offset_max = _offset_base + _size_max;
            this.m_number_of_member = _number_of_member;
            this.m_local_dependency = false;
            this.m_end_block = null;
            if (this.block_type == BLOCK_TYPE.LOCAL_STRUCT || this.block_type == BLOCK_TYPE.LOCAL_BITS_STRUCT || this.block_type == BLOCK_TYPE.LOCAL_UNION)
            {
                base.UniqueName = Program.CreateUniqueName();
                base.block_parent.local_dependency = true;
            }
        }

        // Token: 0x17000006 RID: 6
        // (get) Token: 0x06000098 RID: 152 RVA: 0x000079C3 File Offset: 0x000069C3
        public BLOCK_TYPE block_type
        {
            get
            {
                return this.m_block_type;
            }
        }

        // Token: 0x17000007 RID: 7
        // (get) Token: 0x06000099 RID: 153 RVA: 0x000079CB File Offset: 0x000069CB
        // (set) Token: 0x0600009A RID: 154 RVA: 0x000079D3 File Offset: 0x000069D3
        public uint number_of_member
        {
            get
            {
                return this.m_number_of_member;
            }
            set
            {
                this.m_number_of_member = value;
            }
        }

        // Token: 0x17000008 RID: 8
        // (get) Token: 0x0600009B RID: 155 RVA: 0x000079DC File Offset: 0x000069DC
        public ulong offset_base
        {
            get
            {
                return this.m_offset_base;
            }
        }

        // Token: 0x17000009 RID: 9
        // (get) Token: 0x0600009C RID: 156 RVA: 0x000079E4 File Offset: 0x000069E4
        // (set) Token: 0x0600009D RID: 157 RVA: 0x000079EC File Offset: 0x000069EC
        public ulong size_max
        {
            get
            {
                return this.m_size_max;
            }
            set
            {
                this.m_size_max = value;
            }
        }

        // Token: 0x1700000A RID: 10
        // (get) Token: 0x0600009E RID: 158 RVA: 0x000079F5 File Offset: 0x000069F5
        public ulong offset_max
        {
            get
            {
                return this.m_offset_max;
            }
        }

        // Token: 0x1700000B RID: 11
        // (get) Token: 0x0600009F RID: 159 RVA: 0x000079FD File Offset: 0x000069FD
        // (set) Token: 0x060000A0 RID: 160 RVA: 0x00007A05 File Offset: 0x00006A05
        public bool local_dependency
        {
            get
            {
                return this.m_local_dependency;
            }
            set
            {
                this.m_local_dependency = value;
            }
        }

        // Token: 0x1700000C RID: 12
        // (get) Token: 0x060000A1 RID: 161 RVA: 0x00007A0E File Offset: 0x00006A0E
        // (set) Token: 0x060000A2 RID: 162 RVA: 0x00007A16 File Offset: 0x00006A16
        public EndBlock end_block
        {
            get
            {
                return this.m_end_block;
            }
            set
            {
                this.m_end_block = value;
            }
        }

        // Token: 0x060000A3 RID: 163 RVA: 0x00007A1F File Offset: 0x00006A1F
        public override ulong GetOffset()
        {
            return this.offset_base;
        }

        // Token: 0x060000A4 RID: 164 RVA: 0x00007A27 File Offset: 0x00006A27
        public override ulong GetLength()
        {
            return this.size_max;
        }

        // Token: 0x060000A5 RID: 165 RVA: 0x00007A2F File Offset: 0x00006A2F
        public bool IsGeneralStruct()
        {
            return this.block_type == BLOCK_TYPE.GLOBAL_STRUCT || this.block_type == BLOCK_TYPE.GLOBAL_BITS_STRUCT || this.block_type == BLOCK_TYPE.LOCAL_STRUCT || this.block_type == BLOCK_TYPE.LOCAL_BITS_STRUCT;
        }

        // Token: 0x060000A6 RID: 166 RVA: 0x00007A58 File Offset: 0x00006A58
        public bool IsStruct()
        {
            return this.block_type == BLOCK_TYPE.GLOBAL_STRUCT || this.block_type == BLOCK_TYPE.LOCAL_STRUCT;
        }

        // Token: 0x060000A7 RID: 167 RVA: 0x00007A6F File Offset: 0x00006A6F
        public bool IsBitsStruct()
        {
            return this.block_type == BLOCK_TYPE.GLOBAL_BITS_STRUCT || this.block_type == BLOCK_TYPE.LOCAL_BITS_STRUCT;
        }

        // Token: 0x060000A8 RID: 168 RVA: 0x00007A86 File Offset: 0x00006A86
        public bool IsUnion()
        {
            return this.block_type == BLOCK_TYPE.GLOBAL_UNION || this.block_type == BLOCK_TYPE.LOCAL_UNION;
        }

        // Token: 0x060000A9 RID: 169 RVA: 0x00007A9D File Offset: 0x00006A9D
        public bool IsGlobal()
        {
            return this.block_type == BLOCK_TYPE.GLOBAL_STRUCT || this.block_type == BLOCK_TYPE.GLOBAL_BITS_STRUCT || this.block_type == BLOCK_TYPE.GLOBAL_UNION || this.block_type == BLOCK_TYPE.GLOBAL_CLASS;
        }

        // Token: 0x060000AA RID: 170 RVA: 0x00007AC5 File Offset: 0x00006AC5
        public bool IsLocal()
        {
            return this.block_type == BLOCK_TYPE.LOCAL_STRUCT || this.block_type == BLOCK_TYPE.LOCAL_BITS_STRUCT || this.block_type == BLOCK_TYPE.LOCAL_UNION || this.block_type == BLOCK_TYPE.LOCAL_CLASS;
        }

        // Token: 0x04000174 RID: 372
        private BLOCK_TYPE m_block_type;

        // Token: 0x04000175 RID: 373
        private uint m_number_of_member;

        // Token: 0x04000176 RID: 374
        private ulong m_offset_base;

        // Token: 0x04000177 RID: 375
        private ulong m_offset_max;

        // Token: 0x04000178 RID: 376
        private ulong m_size_max;

        // Token: 0x04000179 RID: 377
        private EndBlock m_end_block;

        // Token: 0x0400017A RID: 378
        private bool m_local_dependency;
    }
}